import numpy as np

def chebyshev_nodes(start, stop, num=50):
    """
    计算在区间 [start, stop] 上的 num 个切比雪夫节点。

    参数：
    start : float
        节点计算的区间起始值。
    stop : float
        节点计算的区间终止值。
    num : int, optional
        生成的切比雪夫节点的数量，默认为 50。
    endpoint : bool, optional
        如果为 True，则返回的节点包括区间的终止值；默认为 True。
    
    返回：
    nodes : ndarray
        在 [start, stop] 区间上的切比雪夫节点。
    """

    if num < 2:
        raise ValueError("Invalid number to compute Chebyshev nodes.")
    
    # 切比雪夫节点的标准公式：x_k = cos((2k - 1)π / (2n))
    k = np.arange(1, num + 1)
    theta = (2 * k - 1) * np.pi / (2 * num)
    x_chebyshev = np.cos(theta)
    
    # 将切比雪夫节点从 [-1, 1] 线性映射到 [start, stop]
    nodes = 0.5 * (start + stop) + 0.5 * (stop - start) * x_chebyshev

    return nodes